home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / prolog / brklyprl.lha / Emulator / Tests / qsort.w < prev    next >
Encoding:
Text File  |  1989-04-14  |  9.9 KB  |  577 lines

  1. procedure  main/0
  2.  
  3. _865:
  4.     put_constant  &1,X1
  5.     init  Y1
  6.     put_variable_y  Y2,X2
  7.     call  make_list/2,2
  8.     put_nil  X3
  9.     put_unsafe_value  Y2,X1
  10.     put_value_y  Y1,X2
  11.     call  qsort/3,1
  12.     put_constant  &20,X1
  13.     put_unsafe_value  Y1,X2
  14.     call  write_limited/2,0
  15.     escape  nl/0
  16.     proceed
  17.  
  18.  
  19. procedure  qsort/3
  20.  
  21.     switch_on_term  _1715,_1716,fail
  22. _1721:
  23.     try_me_else  _1726,3
  24. _1716:
  25.     init  Y3
  26.     get_variable_y  Y1,X2
  27.     get_variable_y  Y5,X3
  28.     get_list  X1
  29.     unify_variable_y  Y4
  30.     unify_variable_x  X1
  31.     put_value_y  Y4,X2
  32.     put_variable_y  Y2,X3
  33.     put_variable_y  Y6,X4
  34.     call  partition/4,6
  35.     put_unsafe_value  Y6,X1
  36.     put_value_y  Y3,X2
  37.     put_value_y  Y5,X3
  38.     call  qsort/3,4
  39.     put_list  X3
  40.     unify_value_write_y  Y4
  41.     unify_variable_write_x  X8
  42.     get_value_y  Y3,X8
  43.     put_unsafe_value  Y2,X1
  44.     put_value_y  Y1,X2
  45.     execute_proc  qsort/3
  46. _1726:
  47.     trust_me_else  fail
  48. _1715:
  49.     get_value_x  X2,X3
  50.     get_nil  X1
  51.     proceed
  52.  
  53.  
  54. procedure  partition/4
  55.  
  56.     switch_on_term  _3004,_3005,fail
  57. _3010:
  58.     try_me_else  _3015,4
  59. _3019:
  60.     get_list  X1
  61.     unify_variable_x  X1
  62.     unify_variable_x  X5
  63.     get_list  X3
  64.     unify_value_x  X1
  65.     unify_variable_x  X3
  66.     escape  </2
  67.     cut
  68.     put_value_x  X5,X1
  69.     execute_proc  partition/4
  70. _3015:
  71.     retry_me_else  _3093
  72. _3097:
  73.     get_list  X1
  74.     unify_variable_x  X5
  75.     unify_variable_x  X1
  76.     get_list  X4
  77.     unify_value_x  X5
  78.     unify_variable_x  X4
  79.     execute_proc  partition/4
  80. _3093:
  81.     trust_me_else  fail
  82. _3004:
  83.     get_nil  X1
  84.     get_nil  X3
  85.     get_nil  X4
  86.     proceed
  87. _3005:
  88.     try  _3019,4
  89.     trust  _3097
  90.  
  91.  
  92. procedure  make_list/2
  93.  
  94. _3682:
  95.     put_nil  X3
  96.     execute_proc  make_list/3
  97.  
  98.  
  99. procedure  make_list/3
  100.  
  101.     switch_on_term  _7915,_7916,_7916
  102. _7915:
  103.     try_me_else  _7926,3
  104. _7930:
  105.     get_constant  &0,X1
  106.     get_value_x  X2,X3
  107.     cut
  108.     proceed
  109. _7926:
  110.     trust_me_else  fail
  111. _7916:
  112.     get_variable_y  Y3,X1
  113.     get_variable_y  Y1,X3
  114.     put_value_x  X2,X1
  115.     put_variable_y  Y2,X2
  116.     call  a_list/2,3
  117.     put_variable_x  X1,X1
  118.     put_value_y  Y3,X2
  119.     put_constant  -,X3
  120.     put_constant  &1,X4
  121.     escape  is/4
  122.     put_unsafe_value  Y2,X2
  123.     put_value_y  Y1,X3
  124.     execute_proc  make_list/3
  125.  
  126.  
  127. procedure  a_list/2
  128.  
  129. _9782:
  130.     get_list  X1
  131.     unify_constant  &4318
  132.     get_cdr_list
  133.     unify_constant  &1444
  134.     get_cdr_list
  135.     unify_constant  &2190
  136.     get_cdr_list
  137.     unify_constant  &7500
  138.     get_cdr_list
  139.     unify_constant  &6253
  140.     get_cdr_list
  141.     unify_constant  &9428
  142.     get_cdr_list
  143.     unify_constant  &3816
  144.     get_cdr_list
  145.     unify_constant  &4457
  146.     get_cdr_list
  147.     unify_constant  &4322
  148.     get_cdr_list
  149.     unify_constant  &9541
  150.     get_cdr_list
  151.     unify_constant  &8178
  152.     get_cdr_list
  153.     unify_constant  &6260
  154.     get_cdr_list
  155.     unify_constant  &1516
  156.     get_cdr_list
  157.     unify_constant  &5798
  158.     get_cdr_list
  159.     unify_constant  &2934
  160.     get_cdr_list
  161.     unify_constant  &3445
  162.     get_cdr_list
  163.     unify_constant  &4876
  164.     get_cdr_list
  165.     unify_constant  &4567
  166.     get_cdr_list
  167.     unify_constant  &9535
  168.     get_cdr_list
  169.     unify_constant  &2995
  170.     get_cdr_list
  171.     unify_constant  &413
  172.     get_cdr_list
  173.     unify_constant  &3385
  174.     get_cdr_list
  175.     unify_constant  &4880
  176.     get_cdr_list
  177.     unify_constant  &6692
  178.     get_cdr_list
  179.     unify_constant  &901
  180.     get_cdr_list
  181.     unify_constant  &5125
  182.     get_cdr_list
  183.     unify_constant  &1202
  184.     get_cdr_list
  185.     unify_constant  &8602
  186.     get_cdr_list
  187.     unify_constant  &6536
  188.     get_cdr_list
  189.     unify_constant  &7325
  190.     get_cdr_list
  191.     unify_constant  &4081
  192.     get_cdr_list
  193.     unify_constant  &7206
  194.     get_cdr_list
  195.     unify_constant  &5121
  196.     get_cdr_list
  197.     unify_constant  &2624
  198.     get_cdr_list
  199.     unify_constant  &1059
  200.     get_cdr_list
  201.     unify_constant  &7727
  202.     get_cdr_list
  203.     unify_constant  &8404
  204.     get_cdr_list
  205.     unify_constant  &4875
  206.     get_cdr_list
  207.     unify_constant  &2184
  208.     get_cdr_list
  209.     unify_constant  &9078
  210.     get_cdr_list
  211.     unify_constant  &4416
  212.     get_cdr_list
  213.     unify_constant  &6714
  214.     get_cdr_list
  215.     unify_constant  &5338
  216.     get_cdr_list
  217.     unify_constant  &5932
  218.     get_cdr_list
  219.     unify_constant  &2512
  220.     get_cdr_list
  221.     unify_constant  &8272
  222.     get_cdr_list
  223.     unify_constant  &5730
  224.     get_cdr_list
  225.     unify_constant  &3741
  226.     get_cdr_list
  227.     unify_constant  &9191
  228.     get_cdr_list
  229.     unify_constant  &1617
  230.     get_cdr_list
  231.     unify_constant  &6736
  232.     get_cdr_list
  233.     unify_constant  &9604
  234.     get_cdr_list
  235.     unify_constant  &1354
  236.     get_cdr_list
  237.     unify_constant  &7969
  238.     get_cdr_list
  239.     unify_constant  &2648
  240.     get_cdr_list
  241.     unify_constant  &2255
  242.     get_cdr_list
  243.     unify_constant  &3094
  244.     get_cdr_list
  245.     unify_constant  &3851
  246.     get_cdr_list
  247.     unify_constant  &7210
  248.     get_cdr_list
  249.     unify_constant  &5982
  250.     get_cdr_list
  251.     unify_constant  &7528
  252.     get_cdr_list
  253.     unify_constant  &7643
  254.     get_cdr_list
  255.     unify_constant  &3189
  256.     get_cdr_list
  257.     unify_constant  &2650
  258.     get_cdr_list
  259.     unify_constant  &267
  260.     get_cdr_list
  261.     unify_constant  &4248
  262.     get_cdr_list
  263.     unify_constant  &6729
  264.     get_cdr_list
  265.     unify_constant  &5023
  266.     get_cdr_list
  267.     unify_constant  &9123
  268.     get_cdr_list
  269.     unify_constant  &8913
  270.     get_cdr_list
  271.     unify_constant  &4102
  272.     get_cdr_list
  273.     unify_constant  &9892
  274.     get_cdr_list
  275.     unify_constant  &5628
  276.     get_cdr_list
  277.     unify_constant  &5792
  278.     get_cdr_list
  279.     unify_constant  &5824
  280.     get_cdr_list
  281.     unify_constant  &4492
  282.     get_cdr_list
  283.     unify_constant  &4065
  284.     get_cdr_list
  285.     unify_constant  &7906
  286.     get_cdr_list
  287.     unify_constant  &8233
  288.     get_cdr_list
  289.     unify_constant  &3256
  290.     get_cdr_list
  291.     unify_constant  &9523
  292.     get_cdr_list
  293.     unify_constant  &1322
  294.     get_cdr_list
  295.     unify_constant  &9213
  296.     get_cdr_list
  297.     unify_constant  &878
  298.     get_cdr_list
  299.     unify_constant  &9291
  300.     get_cdr_list
  301.     unify_constant  &1861
  302.     get_cdr_list
  303.     unify_constant  &9485
  304.     get_cdr_list
  305.     unify_constant  &8737
  306.     get_cdr_list
  307.     unify_constant  &2064
  308.     get_cdr_list
  309.     unify_constant  &6695
  310.     get_cdr_list
  311.     unify_constant  &4720
  312.     get_cdr_list
  313.     unify_constant  &5945
  314.     get_cdr_list
  315.     unify_constant  &4339
  316.     get_cdr_list
  317.     unify_constant  &7909
  318.     get_cdr_list
  319.     unify_constant  &4947
  320.     get_cdr_list
  321.     unify_constant  &958
  322.     get_cdr_list
  323.     unify_constant  &2157
  324.     get_cdr_list
  325.     unify_constant  &1676
  326.     get_cdr_list
  327.     unify_constant  &2334
  328.     get_cdr_list
  329.     unify_constant  &7632
  330.     get_cdr_list
  331.     unify_constant  &589
  332.     get_cdr_list
  333.     unify_constant  &2788
  334.     get_cdr_list
  335.     unify_constant  &7524
  336.     get_cdr_list
  337.     unify_constant  &2569
  338.     get_cdr_list
  339.     unify_constant  &8580
  340.     get_cdr_list
  341.     unify_constant  &9701
  342.     get_cdr_list
  343.     unify_constant  &7062
  344.     get_cdr_list
  345.     unify_constant  &2645
  346.     get_cdr_list
  347.     unify_constant  &7607
  348.     get_cdr_list
  349.     unify_constant  &1647
  350.     get_cdr_list
  351.     unify_constant  &2254
  352.     get_cdr_list
  353.     unify_constant  &7131
  354.     get_cdr_list
  355.     unify_constant  &2969
  356.     get_cdr_list
  357.     unify_constant  &1467
  358.     get_cdr_list
  359.     unify_constant  &4361
  360.     get_cdr_list
  361.     unify_constant  &2260
  362.     get_cdr_list
  363.     unify_constant  &9680
  364.     get_cdr_list
  365.     unify_constant  &3846
  366.     get_cdr_list
  367.     unify_constant  &998
  368.     get_cdr_list
  369.     unify_constant  &1745
  370.     get_cdr_list
  371.     unify_constant  &6894
  372.     get_cdr_list
  373.     unify_constant  &5718
  374.     get_cdr_list
  375.     unify_constant  &4042
  376.     get_cdr_list
  377.     unify_constant  &1233
  378.     get_cdr_list
  379.     unify_constant  &9979
  380.     get_cdr_list
  381.     unify_constant  &8989
  382.     get_cdr_list
  383.     unify_constant  &8543
  384.     get_cdr_list
  385.     unify_constant  &2136
  386.     get_cdr_list
  387.     unify_constant  &665
  388.     get_cdr_list
  389.     unify_constant  &7229
  390.     get_cdr_list
  391.     unify_constant  &6120
  392.     get_cdr_list
  393.     unify_constant  &7606
  394.     get_cdr_list
  395.     unify_constant  &17
  396.     get_cdr_list
  397.     unify_constant  &3645
  398.     get_cdr_list
  399.     unify_constant  &6528
  400.     get_cdr_list
  401.     unify_constant  &8598
  402.     get_cdr_list
  403.     unify_constant  &3346
  404.     get_cdr_list
  405.     unify_constant  &9942
  406.     get_cdr_list
  407.     unify_constant  &1243
  408.     get_cdr_list
  409.     unify_constant  &953
  410.     get_cdr_list
  411.     unify_constant  &1589
  412.     get_cdr_list
  413.     unify_constant  &9849
  414.     get_cdr_list
  415.     unify_constant  &4436
  416.     get_cdr_list
  417.     unify_constant  &4559
  418.     get_cdr_list
  419.     unify_constant  &7668
  420.     get_cdr_list
  421.     unify_constant  &8797
  422.     get_cdr_list
  423.     unify_constant  &3171
  424.     get_cdr_list
  425.     unify_constant  &7349
  426.     get_cdr_list
  427.     unify_constant  &8996
  428.     get_cdr_list
  429.     unify_constant  &4169
  430.     get_cdr_list
  431.     unify_constant  &5446
  432.     get_cdr_list
  433.     unify_constant  &5890
  434.     get_cdr_list
  435.     unify_constant  &6239
  436.     get_cdr_list
  437.     unify_constant  &9488
  438.     get_cdr_list
  439.     unify_constant  &3475
  440.     get_cdr_list
  441.     unify_constant  &6218
  442.     get_cdr_list
  443.     unify_constant  &4829
  444.     get_cdr_list
  445.     unify_constant  &8370
  446.     get_cdr_list
  447.     unify_constant  &4706
  448.     get_cdr_list
  449.     unify_constant  &5494
  450.     get_cdr_list
  451.     unify_constant  &5600
  452.     get_cdr_list
  453.     unify_constant  &827
  454.     get_cdr_list
  455.     unify_constant  &9452
  456.     get_cdr_list
  457.     unify_constant  &5617
  458.     get_cdr_list
  459.     unify_constant  &4472
  460.     get_cdr_list
  461.     unify_constant  &5980
  462.     get_cdr_list
  463.     unify_constant  &567
  464.     get_cdr_list
  465.     unify_constant  &4170
  466.     get_cdr_list
  467.     unify_constant  &5922
  468.     get_cdr_list
  469.     unify_constant  &1811
  470.     get_cdr_list
  471.     unify_constant  &1475
  472.     get_cdr_list
  473.     unify_constant  &7512
  474.     get_cdr_list
  475.     unify_constant  &8012
  476.     get_cdr_list
  477.     unify_constant  &5912
  478.     get_cdr_list
  479.     unify_constant  &8423
  480.     get_cdr_list
  481.     unify_constant  &2033
  482.     get_cdr_list
  483.     unify_constant  &1061
  484.     get_cdr_list
  485.     unify_constant  &1594
  486.     get_cdr_list
  487.     unify_constant  &5734
  488.     get_cdr_list
  489.     unify_constant  &6409
  490.     get_cdr_list
  491.     unify_constant  &2116
  492.     get_cdr_list
  493.     unify_constant  &1180
  494.     get_cdr_list
  495.     unify_constant  &2299
  496.     get_cdr_list
  497.     unify_constant  &8355
  498.     get_cdr_list
  499.     unify_constant  &7020
  500.     get_cdr_list
  501.     unify_constant  &2126
  502.     get_cdr_list
  503.     unify_constant  &926
  504.     get_cdr_list
  505.     unify_constant  &8201
  506.     get_cdr_list
  507.     unify_constant  &497
  508.     get_cdr_list
  509.     unify_constant  &5632
  510.     get_cdr_list
  511.     unify_constant  &47
  512.     get_cdr_list
  513.     unify_constant  &2449
  514.     get_cdr_list
  515.     unify_constant  &6459
  516.     get_cdr_list
  517.     unify_constant  &9499
  518.     get_cdr_list
  519.     unify_constant  &8066
  520.     get_cdr_list
  521.     unify_constant  &7283
  522.     get_cdr_list
  523.     unify_constant  &1832
  524.     get_cdr_list
  525.     unify_constant  &8634
  526.     get_cdr_list
  527.     unify_constant  &7805
  528.     unify_variable_x  X8
  529.     get_value_x  X2,X8
  530.     proceed
  531.  
  532.  
  533. procedure  write_limited/2
  534.  
  535. _12558:
  536.     get_variable_x  X3,X1
  537.     put_constant  '[',X1
  538.     escape  write/1
  539.     put_value_x  X3,X1
  540.     call  write_limited2/2,0
  541.     put_constant  '...]',X1
  542.     escape  write/1
  543.     escape  nl/0
  544.     proceed
  545.  
  546.  
  547. procedure  write_limited2/2
  548.  
  549.     switch_on_term  _13273,_13274,_13274
  550. _13273:
  551.     try_me_else  _13284,2
  552. _13288:
  553.     get_constant  &0,X1
  554.     cut
  555.     proceed
  556. _13284:
  557.     trust_me_else  fail
  558. _13274:
  559.     get_variable_x  X3,X1
  560.     get_list  X2
  561.     unify_variable_x  X5
  562.     unify_variable_x  X6
  563.     put_variable_x  X7,X1
  564.     put_value_x  X3,X2
  565.     put_constant  -,X3
  566.     put_constant  &1,X4
  567.     escape  is/4
  568.     put_value_x  X5,X1
  569.     escape  write/1
  570.     put_constant  ',',X1
  571.     escape  write/1
  572.     put_value_x  X7,X1
  573.     put_value_x  X6,X2
  574.     execute_proc  write_limited2/2
  575.  
  576.  
  577.